package org.hardstone.domain.note.resource;

import jakarta.persistence.Column;
import jakarta.persistence.Entity;
import jakarta.persistence.Table;
import org.hardstone.domain.BaseItemDomain;
import org.hardstone.domain.BaseCategory;
import org.hardstone.domain.Status;

@Entity
@Table(name = "MindMap")
public class MindMap extends BaseItemDomain<Long> {

    @Column(name = "map_title")
    private String mapTitle;  // MindMap title

    @Column(name = "map_content")
    private String mapContent;  // MindMap content

    @Column(name = "map_tags")
    private String mapTags;  // MindMap tags

    @Column(name = "map_url")
    private String mapUrl;  // MindMap URL

    @Column(name = "map_create_date")
    private String mapCreateDate;  // Creation date

    @Column(name = "map_modify_date")
    private String mapModifyDate;  // Last modification date

    public MindMap() {
        super();
        this.mapTitle = "";
        this.mapContent = "";
        this.mapTags = "";
        this.mapUrl = "";
        this.mapCreateDate = "";
        this.mapModifyDate = "";
    }
    
    public MindMap(Long id, Long itemGroupId, String name, BaseCategory category, Long userId, Long userGroupId, int authority, String url, String description, Status status, String askDate, String modifyDate, String tags, String attribute) {
        super(id, itemGroupId, name, category, userId, userGroupId, authority, url, description, status, askDate, modifyDate, tags, attribute);
    }
    public MindMap(Long id, Long itemGroupId, String name, BaseCategory category, Long userId, Long userGroupId, int authority, String url, String description, Status status, String askDate, String modifyDate, String tags, String attribute, String mapTitle, String mapContent, String mapTags, String mapUrl, String mapCreateDate, String mapModifyDate) {
        super(id, itemGroupId, name, category, userId, userGroupId, authority, url, description, status, askDate, modifyDate, tags, attribute);
        this.mapTitle = mapTitle;
        this.mapContent = mapContent;
        this.mapTags = mapTags;
        this.mapUrl = mapUrl;
        this.mapCreateDate = mapCreateDate;
        this.mapModifyDate = mapModifyDate;
    }

    public MindMap(String mapTitle, String mapContent, String mapTags, String mapUrl, String mapCreateDate, String mapModifyDate) {
        this.mapTitle = mapTitle;
        this.mapContent = mapContent;
        this.mapTags = mapTags;
        this.mapUrl = mapUrl;
        this.mapCreateDate = mapCreateDate;
        this.mapModifyDate = mapModifyDate;
    }

    // Getter and setter methods
    public String getMapTitle() {
        return mapTitle;
    }

    public void setMapTitle(String mapTitle) {
        this.mapTitle = mapTitle;
    }

    public String getMapContent() {
        return mapContent;
    }

    public void setMapContent(String mapContent) {
        this.mapContent = mapContent;
    }

    public String getMapTags() {
        return mapTags;
    }

    public void setMapTags(String mapTags) {
        this.mapTags = mapTags;
    }

    public String getMapUrl() {
        return mapUrl;
    }

    public void setMapUrl(String mapUrl) {
        this.mapUrl = mapUrl;
    }

    public String getMapCreateDate() {
        return mapCreateDate;
    }

    public void setMapCreateDate(String mapCreateDate) {
        this.mapCreateDate = mapCreateDate;
    }

    public String getMapModifyDate() {
        return mapModifyDate;
    }

    public void setMapModifyDate(String mapModifyDate) {
        this.mapModifyDate = mapModifyDate;
    }
    @Override
    public String toString() {
        return "MindMap{" +
                "mapTitle='" + mapTitle + '\'' +
                ", mapContent='" + mapContent + '\'' +
                ", mapTags='" + mapTags + '\'' +
                ", mapUrl='" + mapUrl + '\'' +
                ", mapCreateDate='" + mapCreateDate + '\'' +
                ", mapModifyDate='" + mapModifyDate + '\'' +
                ", id=" + id +
                ", itemGroupId=" + itemGroupId +
                ", name='" + name + '\'' +
                ", baseCategory=" + baseCategory +
                ", userId=" + userId +
                ", userGroupId=" + userGroupId +
                ", authority=" + authority +
                ", url='" + url + '\'' +
                ", description='" + description + '\'' +
                ", status=" + status +
                ", askDate='" + askDate + '\'' +
                ", modifyDate='" + modifyDate + '\'' +
                ", tags='" + tags + '\'' +
                ", attribute='" + attribute + '\'' +
                '}';
    }
}
